home *** CD-ROM | disk | FTP | other *** search
- /* © Harold H. Ipolyi 11 June 1994
-
- Requires ScionGenealogist V 3.13+
-
- -------------------------------README----------------------------------------
- Short: make Mosaic html's from Scion genealogy database
-
- Type: util/rexx
-
- Uploader: ipolyi@pat.mdc.com
-
- Author: Harold H. Ipolyi, P.O.Box 891206, Houston, Tx 77289-1206
-
- Release History:
-
- 11 Jun 1994 . ScionGenealogist V 3.06
- Rev01: 19 Jun 1994 . MakeDir(Gdir) fixed; extra comments processed.
- Rev02: 25 Jun 1994 . Fixed descenders; Women in List italicised
- . ScionGenealogist V 3.13
- Rev03: 3 Sep 1994 . Replace occurrences of "<ScionIRN>" by Data Base NAMES
- . e.g. Replace any <101> by Iam Onehundredone, Jr.
- . Added Family Info file processing; Ancestor trees
- . Added descendant charts
- . Women italicised; men boldface everywhere
- . Added creation of a textual file "GenealogyOf..."
- Rev04: 1 Mar 1995 . cleaned up bugs in creation of a textual file
-
-
- an ARexx script to make Mosaic hypertext from ScionGenealogist data base
-
-
- WHY? some others in my family don't have Amigas.
-
- ScionGenealogist is easy to use, comprehensive, and
- provides Arexx ports for extracting data.
-
- An ARexx script can repeatedly and painlessly recreate Mosaic
- .html files from entries in the ScionGenealogist data base.
-
- Mosaic is an available common method of presentation.
-
-
- TESTED: on Amiga3000 Kickstart v.37.175 Workbench v.38.35
- & Amiga3000 Kickstart v.40.68 Workbench v.40.42
- w/ ScionGenealogist V 3.06 & Mosaic1.2beta_NoNet
- w/ ScionGenealogist V 3.13 & Mosaic1.2_NoNet
-
- Mosaic .html file compatibility tested on Sun NCSA Mosaic
-
- -------------------------------README----------------------------------------
- -----------------------------------------------------------------
- | This Script is somewhat dependent on the following conventions |
- | that I followed in my ScionGenealogist data base: |
- | |
- | · lastnames are kept pure (no honorifics, Jr's, III's ) |
- | |
- | · given names have any and all honorifics AFTER a COMMA |
- | |
- | for example: LastName FirstNames, honorifics |
- | |
- | BAUER-GAUSS Joseph, Dr. |
- | DAGLEY Richard Kelley, Jr. |
- | |
- |-----------------------------------------------------------------|
- | |
- | For a name change (NOT maidenname > marriedname), try this: |
- | New Birth Name > Changed To, Ph. D. |
- | which lists as: Birth Name > Changed To New, Ph. D. |
- | |
- -----------------------------------------------------------------
- «»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»
- »«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«
- «»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»
- »«»« »«»«
- «»«» GetLastName: PROCEDURE at end of script capitalizes Last Names »«»«
- «»«» ------------------------------------------------------------- «»«»
- »«»« | it can also be used to handle "non-conforming" Last Names | »«»«
- «»«» | e.g. "MAC ISAAC" --> "MacISAAC" | «»«»
- »«»« | "VON NUEMANN" --> "VonNuemann" | »«»«
- «»«» ------------------------------------------------------------- «»«»
- »«»« BUT: you must add the additional tests yourself (it's easy!) »«»«
- «»«» «»«»
- «»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»
- »«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«
- «»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»
- |-----------------------------------------------------------------|
- | |
- | · all dates are in the author's suggested form: 8 Jul 1939 |
- | |
- | ( not only is 7/8/39 ambigous, it will also break ) |
- | ( my .html file naming convention in a big way ) |
- | |
- | ( To any who may ask: it would be easy code around, ) |
- | ( but the form suggested by ScionGenealogist author ) |
- | ( Robbie J Akins makes much more sense to me! ) |
- | |
- | · if Death Date is blank; Death Place can be a COMMENT field |
- | e.g. Phone # |
- | · if Burial Date is blank; Burial Place can be a COMMENT field |
- | e.g. Address |
- -----------------------------------------------------------------
-
- * Running 'rx ScionToMosaic.rexx' gives further directions
-
- * Briefly, · start ScionGenealogist and load a data base
- * · 'assign Genealogy: '{Scion data base directory}
- * · start a Shell, cd to wherever you have or wish to have
- * the directory of Mosaic .html's
- * · 'rx ScionToMosaic.rexx Normal' to automagically create a
- * Mosaic .html file for each person in your
- * ScionGenealogist data base; following the TEMPLATE:
-
- ############# begin genealogytemplate.html #########################
- <HTML>
- <TITLE>PERSON Data Sheet</TITLE>
- <H2>PERSON (PERSONGENDER) <A HREF="PERSONI.html"><I>more info</I></A> (())
- <A href="Genealogy/GenealogyFile.html"><B>List of persons.</B></A></H2>
- <H3>
- Born: BIRTHDATE * BIRTHPLACE <BR>
- Died: DEATHDATE + DEATHPLACE . Buried: BURIALPLACE <BR>
- </H3>
- <HR> /* NEW FORMAT BELOW */
- <H3>Immediate Family of <I>PERSON</I></H3>
- <PRE><TT>
- <A HREF="FATHER.html">FATHER</A>_//\_<A HREF="MOTHER.html">MOTHER</A> & MARRIAGEDATE @ MARRIAGEPLACE
- | <A HREF="Family#I.html"><I>family info</i></A>
- |_____ <A HREF="Sibling1.html">Sibling1</A> (Sibling1GENDER) * Sibling1BIRTHDATE
- |_____ <A HREF="SiblingN.html">SiblingN</A> (SiblingNGENDER) * SiblingNBIRTHDATE
- |
- <B>PERSON</B>_//\_<A HREF="SPOUSE1.html">SPOUSE1</A> & MARRIAGE1DATE @ MARRIAGE1PLACE
- | | | <A HREF="Family#I.html"><I>family info</i></A>
- | | |_____ <A HREF="mFGRn1c1.html">mFGRn1c1</A> (mFGRn1c1GENDER) * mFGRn1c1BIRTHDATE
- | | |_____ <A HREF="mFGRn1cN.html">mFGRn1cN</A> (mFGRn1cNGENDER) * mFGRn1cNBIRTHDATE
- | |
- | |_//\_<A HREF="SPOUSE2.html">SPOUSE2</A> & MARRIAGE2DATE @ MARRIAGE2PLACE
- | | <A HREF="Family#I.html"><I>family info</i></A>
- | |_____ <A HREF="mFGRn2c1.html">mFGRn2c1</A> (mFGRn2c1GENDER) * mFGRn2c1BIRTHDATE
- | |_____ <A HREF="mFGRn2cN.html">mFGRn2cN</A> (mFGRn2cNGENDER) * mFGRn2cNBIRTHDATE
- |
- |_//\_<A HREF="SPOUSEN.html">SPOUSEN</A> & MARRIAGENDATE @ MARRIAGENPLACE
- | <A HREF="Family#I.html"><I>family info</i></A>
- |_____ <A HREF="mFGRnNc1.html">mFGRnNc1</A> (mFGRnNc1GENDER) * mFGRnNc1BIRTHDATE
- |_____ <A HREF="mFGRnNcN.html">mFGRnNcN</A> (mFGRnNcNGENDER) * mFGRnNcNBIRTHDATE
- </TT><PRE>
- <HR>
- <H3>Ancestors of <I>PERSON</I></H3>
- <TT>
- - <A HREF="GREATGRANDFATHER.html"><B>GREATGRANDFATHER</A> (FFF) * BIRTHDATE + DEATHDATE</B>
- - <A HREF="GRANDFATHER.html"><B>GRANDFATHER</A> (FF) * BIRTHDATE + DEATHDATE</B>
- - <A HREF="GREATGRANDMOTHER.html"><I>GREATGRANDMOTHER</A> (FFM) * BIRTHDATE + DEATHDATE</I>
- - <A HREF="FATHER.html"><B>FATHER</A> (F) * BIRTHDATE + DEATHDATE</B>
- - <A HREF="GREATGRANDFATHER.html"><B>GREATGRANDFATHER</A> (FMF) * BIRTHDATE + DEATHDATE</B>
- - <A HREF="GRANDMOTHER.html"><I>GRANDMOTHER</A> (FM) * BIRTHDATE + DEATHDATE</I>
- - <A HREF="GREATGRANDMOTHER.html"><I>GREATGRANDMOTHER</A> (FMM) * BIRTHDATE + DEATHDATE</I>
- <H2>PERSON * BIRTHDATE + DEATHDATE</H2>
- - <A HREF="GREATGRANDFATHER.html"><B>GREATGRANDFATHER</A> (MFF) * BIRTHDATE + DEATHDATE</B>
- - <A HREF="GRANDFATHER.html"><B>GRANDFATHER</A> (MF) * BIRTHDATE + DEATHDATE</B>
- - <A HREF="GREATGRANDMOTHER.html"><I>GREATGRANDMOTHER</A> (MFM) * BIRTHDATE + DEATHDATE</I>
- - <A HREF="MOTHER.html"><I>MOTHER</A> (M) * BIRTHDATE + DEATHDATE</I>
- - <A HREF="GREATGRANDFATHER.html"><B>GREATGRANDFATHER</A> (MMF) * BIRTHDATE + DEATHDATE</B>
- - <A HREF="GRANDMOTHER.html"><I>GRANDMOTHER</A> (MM) * BIRTHDATE + DEATHDATE</I>
- - <A HREF="GREATGRANDMOTHER.html"><I>GREATGRANDMOTHER</A> (MMM) * BIRTHDATE + DEATHDATE</I>
- </TT></PRE>
- <HR>
- <H3>
- a template to represent Genealogy data in Mosaic hypertext.<BR>
- * replace all ocurrences of each appropriate ITEM with ACTUAL DATA<BR>
- e.g. search-replace-all PERSON with: My Name<BR>
- e.g. query-search-replace MOTHER with: My Mother's Name<BR>
- * judiciously edit .html file names in anchors<BR>
- * add/remove lines for children, siblings, spouses as necessary<BR>
- <BR>
- bugs: I'm assuming more than 8 char file names (works in UNIX & my Amiga)<BR>
- <BR>
- for discussion: how should files be named to uniquely identify individuals?<BR>
- <BR>
- e.g. I have at least 3 Franz Ruff's (uncle, grandF, great-grandF)<BR>
- these are most likely not other's Franz Ruff's<BR>
- <BR>
- if known, birth dates could be used: "Franz Ruff 18460521.html"<BR>
- or my preferred form: "FrRuff21May1846.html"<BR>
- ( this is working well in a REXX script I am generating )<BR>
- ( to translate my >400 person data base to Mosaic.html )<BR>
- ( on an Amiga3000 from ScionGenealogist using ARexx )<BR>
- <BR>
- even these may not be unique :(
- </H3>
- </HTML>
- ############### end genealogytemplate.html #####################################
-
- * In a Mosaic file (maybe HOME PAGE) have an anchor pointing to GenealogyFile:
-
- <A href="file://localhost/Doc:Mosaic/DBNAMEGenealogy/GenealogyFile.html">
- Genealogy</A>
-
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- ^^ assumes you ran 'rx ScionToMosaic.rexx Normal' in directory: Doc:Mosaic ^^
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
- * You might also create an {MyGenealogy}.html file yourself in directory
- * Doc:Mosaic/DBNAMEGenealogy as a starting point, with the anchor of
-
- <A href="file://localhost/Doc:Mosaic/DBNAMEGenealogy/MyGenealogyFile.html">
- My Genealogy</A>
-
- e.g.:
- _____________________________________________________________
-
- <TITLE>FirstName LastName Genealogy </TITLE>
- <H1>FirstName LastName Genealogy</H1>
- <HR>
- <A HREF="GenealogyFile.html">List of Persons.</A><P>
-
- This is the genealogy of
- <A href="FiLast8Jul1939.html">FirstName LastName</A>.
- _____________________________________________________________
- ^^^^^^^^^^^^^^
- * Note the convention of first 2 characters from FirstName
- * first 4 characters from LastName
- * & BirthDate (with all blanks removed)
- *
- * If the BirthDate is not entered, the convention is:
- * first 2 characters from FirstName
- * first 6 characters from LastName
- * & ScionGenealogist IRN
- *
-
- * The PN{IRN}.DBNAME files are used to generate the "more info" files.
-
- * Whenever the PN{IRN}.DBNAME is changed or replaced, the corresponding
- * "more info" file will be updated if 'rx ScionToMosaic.rexx {IRN}' is re-run.
-
- * TO DO: picture file anchors? PP{IRN}.DBNAME? ILBM not portable. Convert?
-
- */
-
- /* add libraries */
- libs = 'rexxsupport.library rexxarplib.library'
- DO i = 1 TO Words(libs)
- lib = Word(libs,i)
- IF ~Show('Lib',lib) THEN DO
- IF EXISTS('LIBS:'lib) then call addlib lib, 0, -30
- ELSE DO
- 'message "===> cannot find' lib 'in LIBS:"'
- EXIT 10
- END
- END
- END i
-
- IF ~Show(p,'SCIONGEN') THEN DO
- SAY ' '
- SAY ' Cannot proceed because ScionGenealogist is NOT currently running:'
- SAY ' '
- SAY ' 1. Please start ScionGenealogist and'
- SAY ' '
- SAY ' 2. load the desired data base. Then:'
- SAY ' '
- SAY ' 3. rx ScionToMosaic.rexx Normal'
- SAY ' '
- EXIT
- END
-
- Address "SCIONGEN" /* Point at Scion Genealogist port */
- options RESULTS
-
- 'GETDBNAME' /* Issue GET DB NAME command to Scion Genealogist */
- DBNAME = RESULT
-
- PARSE ARG target
- DO WHILE target = ""
- SAY ' '
- SAY ' Enter "Normal" to recreates all PERSON.html files; or'
- SAY ' '
- SAY ' a 'DBNAME' Scion data base "IRN" to recreate a specific PERSON.html file.'
- SAY ' '
- PULL target
- /* EXIT */
- /* ELSE target = Upper(target) */
-
- target = Upper(strip(target,,'"')) /* just in case, remove errant quotes */
- END
-
- IF target = 'Q' | target = 'EXIT' | target = 'QUIT' THEN
- EXIT
-
- IF target = '?' | target = 'H' | target = 'HELP' THEN DO
- SAY ' '
- SAY ' please send comments, questions to:'
- SAY ' '
- SAY ' ipolyi@pat.mdc.com'
- SAY ' or:'
- SAY ' Harold H. Ipolyi '
- SAY ' P.O.Box 891206 '
- SAY ' Houston, Tx 77289-1206 '
- SAY ' '
- SAY ' /¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯\'
- SAY ' Convert ScionGenealogist data base to Mosaic .html hypertext. '
- SAY ' \_______________________________________________________________/'
- SAY ' '
- SAY ' Usage: rx ScionToMosaic.rexx Normal {recreates all PERSON.html files}'
- SAY ' rx ScionToMosaic.rexx IRN {recreates a specific PERSON.html file}'
- SAY ' '
- EXIT
- END
-
- IF target = 'N' THEN
- target = 'NORMAL'
- IF target = 'T' THEN
- target = 'TEST'
-
- /* SAY target */
-
- 'GETPROGVERSION'
- VERSION = RESULT
-
- IF VERSION < 3.13 THEN DO
- SAY ' '
- say ' Requires VERSION = 3.13 or greater'
- SAY ' '
- EXIT
- END
- /* ??? GETDBDIRPATH ??? of Scion data base */
-
- SAY ' '
- Say ' Testing: is data base assignment of Genealogy:'DBNAME' visible?'
- SAY ' '
-
- PRAGMA('w','n')
- IF ~Exists("Genealogy:"DBNAME) THEN DO
- SAY ' Genealogy:'DBNAME' not found,'
- SAY ' '
- SAY " Please create an assign to data base "DBNAME"'s directory:"
- SAY ' '
- SAY ' assign Genealogy: {Volume:Directory}'
- SAY ' '
- EXIT
- END
- PRAGMA('w','w')
-
- Gdir = DBNAME'Genealogy'
- Tdir = DBNAME'Text'
-
- IF ~Makedir(Gdir) THEN DO
- SAY ' '
- SAY ' ===> unable to create directory: 'Gdir
- SAY ' '
- EXIT
- END
-
- IF ~Makedir(Tdir) THEN DO
- SAY ' '
- SAY ' ===> unable to create directory: 'Tdir
- SAY ' '
- EXIT
- END
-
-
- 'GETTOTALIRN' /* Issue command to Scion Genealogist */
- TOTALIRN = RESULT
-
- Say "Number of people in database " DBNAME " = " TOTALIRN
- SAY ' '
-
- 'GETPERSLABEL' 1
- PERSLABEL1 = RESULT
- 'GETPERSLABEL' 2
- PERSLABEL2 = RESULT
- 'GETPERSLABEL' 3
- PERSLABEL3 = RESULT
- 'GETFAMLABEL' 1
- FAMLABEL1 = RESULT
- 'GETFAMLABEL' 2
- FAMLABEL2 = RESULT
- IF IsNumeric(target) THEN
- DO
- Say 'Processing person ' target ' of ' TOTALIRN ' in database ' DBNAME
-
- IF target <= TOTALIRN THEN DO
- /* Open('GenealogyText' @,Tdir'/GenealogyOf'target,'w') */
- Open('GenealogyText',Tdir'/G'target,'w')
- CALL MakeOne(target,0)
- Close('GenealogyText')
- END
- END
- ELSE
- DO
- target = Upper(target)
- IF target = "TEST" THEN DO
-
- DO i = 1 TO 7
- /* Open('GenealogyText',Tdir'/GenealogyOf'i,'w') */
- Open('GenealogyText',Tdir'/G'i,'w')
- CALL MakeOne(i,0)
- Close('GenealogyText')
- END
- END
- ELSE
- DO
- Say "Processing all " TOTALIRN " persons in database " DBNAME
-
- /* GenealogyFile.html is a Scion data base IRN order list of all persons in
- Mosaic .html format, format:
-
- person * birthdate + deathdate (()) father //\ mother */
-
- Say 'Mosaic file name: 'Gdir'/GenealogyFile.html for: List of Persons.'
-
- Open('GenealogyFile',Gdir'/GenealogyFile.html','w')
- WriteLn('GenealogyFile','<HTML>')
- WriteLn('GenealogyFile','<TITLE>List of Persons.</TITLE>')
- WriteLn('GenealogyFile','<H2>List of Persons in data base "'DBNAME'". <B>'Time()' - 'Date()'</B></H2>')
- WriteLn('GenealogyFile','<H3>')
-
- Open('GenealogyText',Tdir'/GenealogyOf'DBNAME,'w')
- WriteLn('GenealogyText','Genealogy Data Base "'GetLastName(DBNAME)'"')
- WriteLn('GenealogyText','')
- WriteLn('GenealogyText','-----------------------------------------------------------')
- WriteLn('GenealogyText','')
-
- DO i = 1 TO TOTALIRN
- CALL MakeOne(i,1)
- END
- WriteLn('GenealogyFile','</H3>')
- WriteLn('GenealogyFile','<HR>')
- WriteLn('GenealogyFile','<Address>')
- 'GETPROGVERSION'
- VERSION = RESULT
- WriteCh('GenealogyFile','<H3>ScionGenealogist')
- IF VERSION > 0 THEN WriteCh('GenealogyFile',' V 'VERSION)
- WriteLn('GenealogyFile',' © Robbie J Akins; ')
- WriteLn('GenealogyFile','Scion'VERSION'ToMosaic.rexx © Harold Ipolyi</H3>')
- WriteLn('GenealogyFile','</Address>')
- WriteLn('GenealogyFile','</HTML>')
- END
- Say ' '
- ThisPath = PRAGMA('d')
- IF Substr(ThisPath,Length(ThisPath),Length(ThisPath)) ~= ":" THEN ThisPath = ThisPath'/'
- Say ' ---------------------------------------------------------------------'
- Say ' If you have not already done so, add the following anchor pointing to'
- Say ' "'GetLastName(DBNAME)' Genealogy" to a Mosaic file (maybe HOME PAGE):'
- Say ' ---------------------------------------------------------------------'
- Say ' <A href="/'ThisPath||Gdir'/GenealogyFile.html">'GetLastName(DBNAME)' Genealogy</A>'
- Say ' ------------------------------------------------------------------'
- END
- SAY ' '
- Say 'ScionToMosaic.rexx completed normally'
- EXIT
-
- /*************************************************************************/
-
- MakeOne: PROCEDURE EXPOSE target DBNAME Gdir Tdir FAMLABEL1 FAMLABEL2 PERSLABEL1 PERSLABEL2 PERSLABEL3
- PARSE ARG ScionIRN, EndOfFile
- 'EXISTPERSON' ScionIRN
- /**/
- if RESULT = 'YES' THEN DO
- /**/
- HasFileFATHER = 0
- HasFileMOTHER = 0
- HasMOTHER = 0
- HasFATHER = 0
- HasPARENTS = 0
- HasCHILDREN = 0
- DoGenText = 0
- 'GETPARENTS' ScionIRN
- PARENTS = RESULT
- tPARENTSt = 't'PARENTS't'
- /* Say 'PARENTS = 'PARENTS tPARENTSt ??? EXISTPARENTS IRN ??? */
- IF tPARENTSt ~= 'tt' THEN HasPARENTS = 1
- 'GETMARRIAGE' ScionIRN 0 /* ??? GETTOTMARRIAGES IRN ??? */
- MARRIAGE = RESULT
- tMARRIAGESt = 't'MARRIAGE't'
- /* Say 'MARRIAGES = 'MARRIAGE tMARRIAGESt */
- IF tMARRIAGESt ~= 'tMARRIAGEt' THEN DO
- mFGRN = MARRIAGE
- 'GETCHILD' mFGRN 0 /* ??? GETTOTCHILDREN FGRN ??? */
- 'EXISTPERSON' RESULT
- if RESULT = 'YES' then HasCHILDREN = 1
- END
- /*
- Say 'PARENTS = 'PARENTS tPARENTSt 'MARRIAGES = 'MARRIAGES tMARRIAGESt 'HasPARENTS = 'HasPARENTS 'HasCHILDREN = 'HasCHILDREN
- */
- IF ( HasPARENTS + HasCHILDREN ) = 1 THEN DoGenText = 1
- /**/
- 'GETLASTNAME' ScionIRN
- LASTNAME = GetLastName(RESULT)
- 'GETFIRSTNAME' ScionIRN
- FIRSTNAME = RESULT
- 'GETSEX' ScionIRN
- GENDER = translate(RESULT,xrange('a','z'),xrange('A','Z'))
- thelastname = LASTNAME
- thegender = GENDER
- FULLNAME = GetFullName(FIRSTNAME)
- MFULLNAME = MGetFullName(FIRSTNAME)
- PFULLNAME = PGetFullName(FIRSTNAME)
- 'GETBIRTHDATE' ScionIRN
- BIRTHDATE = RESULT
- 'GETBIRTHPLACE' ScionIRN
- BIRTHPLACE = RESULT
- 'GETDEATHDATE' ScionIRN
- DEATHDATE = RESULT
- 'GETDEATHPLACE' ScionIRN
- DEATHPLACE = RESULT
- 'GETBURIALPLACE' ScionIRN
- BURIALPLACE = RESULT
- 'GETPERSUSER1' ScionIRN
- PERSUSER1 = CheckForReplacement(RESULT)
- PERSUSERn1 = CheckForNAReplacement(RESULT)
- 'GETPERSUSER2' ScionIRN
- PERSUSER2 = CheckForReplacement(RESULT)
- PERSUSERn2 = CheckForNAReplacement(RESULT)
- 'GETPERSUSER3' ScionIRN
- PERSUSER3 = CheckForReplacement(RESULT)
- PERSUSERn3 = CheckForNAReplacement(RESULT)
- IF target ~= "NORMAL" | BIRTHPLACE ~= "" | DEATHPLACE ~= "" | BURIALPLACE ~= "" | PERSUSER1 ~= "" | PERSUSER2 ~= "" | PERSUSER3 ~= "" THEN DoGenText = 1
- /**/
- IF LASTNAME = "" THEN DO
- Say "Person " ScionIRN"'s last name is not defined; no new Mosaic file being created!"
- RETURN
- END
- IF BIRTHDATE = "" THEN
- PERSONFILENAME = Space(substr(FIRSTNAME,1,2) substr(LASTNAME,1,6) ScionIRN)
- ELSE
- PERSONFILENAME = Space(substr(FIRSTNAME,1,2) substr(LASTNAME,1,4) BIRTHDATE)
- /**/
- PfilN = Gdir'/'PERSONFILENAME
- Say ''
- Say 'Mosaic file: 'PfilN'.html for: 'FULLNAME' {'ScionIRN'}'
- Open('PERSONFILE',PfilN'.html','w')
- WriteLn('PERSONFILE','<HTML>')
- WriteLn('PERSONFILE','<TITLE>'FULLNAME' Data Sheet</TITLE>')
- WriteCh('PERSONFILE','<H2>'MFULLNAME)
- /**/
- IF Exists('Genealogy:PN'ScionIRN'.'DBNAME) THEN DO
- Say 'Writing info file 'PfilN'I.html'
- Open('PNDBNAME','Genealogy:PN'ScionIRN'.'DBNAME,'r')
- Open('PERSONI',PfilN'I.html','w')
- WriteLn('PERSONI','<HTML>')
- WriteLn('PERSONI','<TITLE>'FULLNAME' Information</TITLE>')
- WriteCh('PERSONI','<H2><A HREF="'PERSONFILENAME'.html">'MFULLNAME)
- WriteCh('PERSONI','</A> Information. <A HREF="GenealogyFile.html">')
- WriteLn('PERSONI','<B>List of Persons.</B></A></H2><PRE><TT>')
- IF DoGenText THEN WriteLn('GenealogyText',PFULLNAME' Information.')
- DO While ~EOF('PNDBNAME')
- line = ReadLn('PNDBNAME')
- WriteLn('PERSONI',CheckForReplacement(line))
- IF DoGenText THEN WriteLn('GenealogyText',CheckForNAReplacement(line))
- END
- Close('PNDBNAME')
- IF DoGenText THEN WriteLn('GenealogyText','')
- WriteLn('PERSONI','</HTML>')
- Close('PERSONI')
- WriteCh('PERSONFILE',' (<A HREF="'PERSONFILENAME'I.html"><B>more info</B></A>)')
- END
- /**/
- WriteLn('PERSONFILE',' <A HREF="GenealogyFile.html"><B>List of Persons.</B></A></H2><H3>')
- IF DoGenText THEN DO
- /* IF target ~= "NORMAL" THEN Say 'Printable file: 'Tdir'/GenealogyOf'ScionIRN' for 'FULLNAME' {'ScionIRN'}' */
- IF target ~= "NORMAL" THEN Say 'Printable file: 'Tdir'/G'ScionIRN' for 'FULLNAME' {'ScionIRN'}'
- WriteLn('GenealogyText','')
- WriteLn('GenealogyText','-----------------------------------------------------------')
- WriteLn('GenealogyText','')
- WriteLn('GenealogyText',PFULLNAME' Data Sheet')
- END
- IF BIRTHDATE || BIRTHPLACE ~= "" THEN DO
- WriteCh('PERSONFILE','Born: ')
- IF BIRTHDATE ~= "" THEN WriteCh('PERSONFILE',BIRTHDATE)
- IF BIRTHPLACE ~= "" THEN WriteCh('PERSONFILE',' * 'BIRTHPLACE)
- WriteLn('PERSONFILE','<BR>')
- IF BIRTHDATE ~= "" THEN IF DoGenText THEN WriteCh('GenealogyText','Born: 'BIRTHDATE)
- IF BIRTHPLACE ~= "" THEN IF DoGenText THEN WriteCh('GenealogyText',' * 'BIRTHPLACE)
- IF DoGenText THEN WriteLn('GenealogyText','')
- END
- IF DEATHDATE ~= "" THEN DO
- WriteCh('PERSONFILE','Died: 'DEATHDATE' + 'DEATHPLACE)
- IF DoGenText THEN WriteCh('GenealogyText','Died: 'DEATHDATE' + 'DEATHPLACE)
- IF BURIALPLACE ~= "" THEN DO
- WriteCh('PERSONFILE',' . Buried: 'BURIALPLACE)
- IF DoGenText THEN WriteCh('GenealogyText',' . Buried: 'BURIALPLACE)
- END
- WriteLn('PERSONFILE','<BR>')
- IF DoGenText THEN WriteLn('GenealogyText','')
- END
- ELSE DO
- IF DEATHPLACE ~= "" THEN DO
- WriteLn('PERSONFILE',DEATHPLACE'<BR>')
- IF DoGenText THEN WriteLn('GenealogyText',DEATHPLACE)
- END
- IF BURIALPLACE ~= "" THEN DO
- WriteLn('PERSONFILE',BURIALPLACE'<BR>')
- IF DoGenText THEN WriteLn('GenealogyText',BURIALPLACE)
- END
- END
- IF PERSUSER1 ~= "" THEN DO
- WriteLn('PERSONFILE',PERSLABEL1': 'PERSUSER1'<BR>')
- IF DoGenText THEN WriteLn('GenealogyText',PERSLABEL1': 'PERSUSERn1)
- END
- IF PERSUSER2 ~= "" THEN DO
- WriteLn('PERSONFILE',PERSLABEL2': 'PERSUSER2'<BR>')
- IF DoGenText THEN WriteLn('GenealogyText',PERSLABEL2': 'PERSUSERn2)
- END
- IF PERSUSER3 ~= "" THEN DO
- WriteLn('PERSONFILE',PERSLABEL3': 'PERSUSER3'<BR>')
- IF DoGenText THEN WriteLn('GenealogyText',PERSLABEL3': 'PERSUSERn3)
- END
-
- /* end of personal data; start family tree segment */
-
- WriteLn('PERSONFILE','<HR>')
- IF DoGenText THEN DO
- WriteLn('GenealogyText','')
- WriteLn('GenealogyText','-----------------------------------------------------------')
- WriteLn('GenealogyText','')
- END
- WriteCh('PERSONFILE','<H3>Immediate Family of 'MFULLNAME'</H3>')
- IF DoGenText THEN DO
- WriteLn('GenealogyText','Immediate Family of 'PFULLNAME)
- WriteLn('GenealogyText','')
- END
- WriteLn('PERSONFILE','<PRE><TT>')
- /**/
- IF HasPARENTS THEN DO
- 'GETPRINCIPAL' PARENTS
- PRINCIPAL = RESULT
- 'GETSPOUSE' PARENTS
- SPOUSE = RESULT
- 'GETMARRYDATE' PARENTS
- PARENTSMARRIAGEDATE = RESULT
- 'GETMARRYPLACE' PARENTS
- PARENTSmFGRNPLACE = RESULT
- 'GETFAMUSER1' PARENTS
- PARENTSmFGRNCELEBRANT = CheckForReplacement(RESULT)
- PARENTSnmFGRNCELEBRANT = CheckForNAReplacement(RESULT)
- 'GETFAMUSER2' PARENTS
- PARENTSmFGRNCOMMENT = CheckForReplacement(RESULT)
- PARENTSnmFGRNCOMMENT = CheckForNAReplacement(RESULT)
- 'GETSEX' PRINCIPAL
- IF RESULT = 'M' THEN
- DO
- FATHERScionIRN = PRINCIPAL
- MOTHERScionIRN = SPOUSE
- END
- ELSE
- DO
- FATHERScionIRN = SPOUSE
- MOTHERScionIRN = PRINCIPAL
- END
- 'GETLASTNAME' FATHERScionIRN
- FATHERLASTNAME = GetLastName(RESULT)
- 'GETFIRSTNAME' FATHERScionIRN
- FATHERFIRSTNAME = RESULT
- IF FATHERFIRSTNAME ~= "" | FATHERLASTNAME ~= "" THEN HasFATHER = 1
- thelastname = FATHERLASTNAME
- thegender = "m"
- FATHERFULLNAME = GetFullName(FATHERFIRSTNAME)
- MFATHERFULLNAME = MGetFullName(FATHERFIRSTNAME)
- PFATHERFULLNAME = PGetFullName(FATHERFIRSTNAME)
- 'GETBIRTHDATE' FATHERScionIRN
- FATHERBIRTHDATE = RESULT
- 'GETLASTNAME' MOTHERScionIRN
- MOTHERLASTNAME = GetLastName(RESULT)
- 'GETFIRSTNAME' MOTHERScionIRN
- MOTHERFIRSTNAME = RESULT
- IF MOTHERFIRSTNAME ~= "" | MOTHERLASTNAME ~= "" THEN HasMOTHER = 1
- thelastname = MOTHERLASTNAME
- thegender = "f"
- MOTHERFULLNAME = GetFullName(MOTHERFIRSTNAME)
- MMOTHERFULLNAME = MGetFullName(MOTHERFIRSTNAME)
- PMOTHERFULLNAME = PGetFullName(MOTHERFIRSTNAME)
- 'GETBIRTHDATE' MOTHERScionIRN
- MOTHERBIRTHDATE = RESULT
- /**/
- IF FATHERLASTNAME ~= "" THEN DO
- HasFileFATHER = 1
- IF FATHERBIRTHDATE = "" THEN DO
- FATHERFILENAME = Space(substr(FATHERFIRSTNAME,1,2) substr(FATHERLASTNAME,1,6) FATHERScionIRN)
- END
- ELSE DO
- FATHERFILENAME = Space(substr(FATHERFIRSTNAME,1,2) substr(FATHERLASTNAME,1,4) FATHERBIRTHDATE)
- END
- END
- /**/
- IF MOTHERLASTNAME ~= "" THEN DO
- HasFileMOTHER = 1
- IF MOTHERBIRTHDATE = "" THEN DO
- MOTHERFILENAME = Space(substr(MOTHERFIRSTNAME,1,2) substr(MOTHERLASTNAME,1,6) MOTHERScionIRN)
- END
- ELSE DO
- MOTHERFILENAME = Space(substr(MOTHERFIRSTNAME,1,2) substr(MOTHERLASTNAME,1,4) MOTHERBIRTHDATE)
- END
- END
- /**/
- WriteCh('PERSONFILE',' ')
- IF HasFileFATHER THEN WriteCh('PERSONFILE','<A HREF="'FATHERFILENAME'.html">')
- WriteCh('PERSONFILE',MFATHERFULLNAME)
- IF HasFileFATHER THEN WriteCh('PERSONFILE','</A> //\ ')
- IF HasFileMOTHER THEN WriteCh('PERSONFILE','<A HREF="'MOTHERFILENAME'.html">')
- WriteCh('PERSONFILE',MMOTHERFULLNAME)
- IF HasFileMOTHER THEN WriteCh('PERSONFILE','</A>')
- /**/
- IF PARENTSMARRIAGEDATE ~= "" THEN
- WriteCh('PERSONFILE',' & 'PARENTSMARRIAGEDATE)
- IF PARENTSmFGRNPLACE ~= "" THEN
- WriteCh('PERSONFILE',' @ 'PARENTSmFGRNPLACE)
- /**/
- WriteLn('PERSONFILE','')
- IF DoGenText THEN DO
- WriteCh('GenealogyText',' 'PFATHERFULLNAME' //\ 'PMOTHERFULLNAME)
- IF PARENTSMARRIAGEDATE ~= "" THEN WriteCh('GenealogyText',' & 'PARENTSMARRIAGEDATE)
- IF PARENTSmFGRNPLACE ~= "" THEN WriteCh('GenealogyText',' @ 'PARENTSmFGRNPLACE)
- WriteLn('GenealogyText','')
- END
- spcs = ' |'
- DO i = 0 TO Length(FATHERFULLNAME)
- spcs = spcs' ' /* ??? GETFAMLBL1 ??? */
- END /* ??? GETFAMLBL2 ??? */
- /**/
- FfilN = Gdir'/Family'PARENTS
- IF Exists(FfilN'I.html') THEN DO
- IF Exists('Genealogy:FN'PARENTS'.'DBNAME) THEN DO
- Parse value StateF(FfilN'I.html') with type size blk bits PFday PFmin PFtick com
- Parse value StateF('Genealogy:FN'PARENTS'.'DBNAME) with type size blk bits PNday PNmin PNtick com
- /* Say PERSONFILENAME'I.html' PFday PFmin PFtick 'Genealogy:FN'PARENTS'.'DBNAME PNday PNmin PNtick */
- IF ( PNday > PFday ) | ( PNday = PFday & PNmin > PFmin ) THEN DO
- Delete(FfilN'I.html')
- Say 'Scion file Genealogy:FN'PARENTS'.'DBNAME 'newer; replacing 'FfilN'I.html'
- END
- END
- END
- /**/
- Minfo = 0
- IF Exists(FfilN'I.html') THEN
- Minfo = 1
- /* WriteCh('PERSONFILE',' (<A HREF="'PERSONFILENAME'I.html"><B>more info</B></A>)') */
- ELSE DO
- IF Exists('Genealogy:FN'PARENTS'.'DBNAME) THEN DO
- Minfo = 1
- Say 'Writing info file 'FfilN'I.html'
- Open('FNDBNAME','Genealogy:FN'PARENTS'.'DBNAME,'r')
- Open('FAMILYI',FfilN'I.html','w')
- WriteLn('FAMILYI','<HTML>')
- WriteLn('FAMILYI','<TITLE>'FATHERFULLNAME' Family Information</TITLE>')
- WriteCh('FAMILYI','<H2><A HREF="GenealogyFile.html">')
- WriteLn('FAMILYI','<B>List of Persons.</B></A></H2><PRE><TT>')
- DO While ~EOF('FNDBNAME')
- line = ReadLn('FNDBNAME')
- WriteLn('FAMILYI',line)
- END
- Close('FNDBNAME')
- WriteLn('FAMILYI','</HTML>')
- Close('FAMILYI')
- /* WriteCh('PERSONFILE',' (<A HREF="'PERSONFILENAME'I.html"><B>more info</B></A>)') */
- END
- END
- /**/
- IF PARENTSmFGRNCELEBRANT ~= '' | Minfo THEN DO
- WriteCh('PERSONFILE',spcs)
- IF Minfo THEN
- WriteCh('PERSONFILE','(<A HREF="Family'PARENTS'I.html"><B>family info</B></A>) ')
- IF PARENTSmFGRNCELEBRANT ~= '' THEN DO
- WriteCh('PERSONFILE',FAMLABEL1': 'PARENTSmFGRNCELEBRANT)
- IF DoGenText THEN WriteLn('GenealogyText',spcs||FAMLABEL1': 'PARENTSnmFGRNCELEBRANT)
- END
- WriteLn('PERSONFILE','')
- END
- IF PARENTSmFGRNCOMMENT ~= '' THEN DO
- WriteLn('PERSONFILE',spcs' 'FAMLABEL2': 'PARENTSmFGRNCOMMENT)
- IF DoGenText THEN WriteLn('GenealogyText',spcs' 'FAMLABEL2': 'PARENTSnmFGRNCOMMENT)
- END
- DO i = 0 TO 39 /* ??? GETTOTCHILDREN FGRN ??? */
- 'GETCHILD' PARENTS i
- PARENTSc = RESULT
- 'GETFIRSTNAME' PARENTSc
- PARENTScFIRSTNAME = RESULT
- /**/
- IF PARENTScFIRSTNAME ~= "" THEN DO
- IF PARENTSc ~= ScionIRN THEN DO
- 'GETLASTNAME' PARENTSc
- PARENTScLASTNAME = GetLastName(RESULT)
- 'GETFIRSTNAME' PARENTSc
- PARENTScFIRSTNAME = RESULT
- 'GETSEX' PARENTSc
- PARENTScGENDER = translate(RESULT,xrange('a','z'),xrange('A','Z'))
- thelastname = PARENTScLASTNAME
- thegender = PARENTScGENDER
- PARENTScFULLNAME = GetFullName(PARENTScFIRSTNAME)
- MPARENTScFULLNAME = MGetFullName(PARENTScFIRSTNAME)
- PPARENTScFULLNAME = PGetFullName(PARENTScFIRSTNAME)
- 'GETBIRTHDATE' PARENTSc
- PARENTScBIRTHDATE = RESULT
- 'GETDEATHDATE' PARENTSc
- PARENTScDEATHDATE = RESULT
- /**/
- IF PARENTScBIRTHDATE = "" THEN
- PARENTScFILENAME = Space(substr(PARENTScFIRSTNAME,1,2) substr(PARENTScLASTNAME,1,6) PARENTSc)
- ELSE
- PARENTScFILENAME = Space(substr(PARENTScFIRSTNAME,1,2) substr(PARENTScLASTNAME,1,4) PARENTScBIRTHDATE)
- /**/
- WriteCh('PERSONFILE',' |_____ <A HREF="'PARENTScFILENAME'.html">')
- /**/
- IF PARENTScLASTNAME ~= FATHERLASTNAME THEN
- WriteCh('PERSONFILE',MPARENTScFULLNAME)
- ELSE DO
- IF PARENTScGENDER = "m" THEN WriteCh('PERSONFILE','<B>'PARENTScFIRSTNAME'</B>')
- IF PARENTScGENDER = "f" THEN WriteCh('PERSONFILE','<I>'PARENTScFIRSTNAME'</I>')
- END
- /**/
- WriteCh('PERSONFILE','</A> ')
- /**/
- IF PARENTScBIRTHDATE ~= "" THEN
- WriteCh('PERSONFILE',' * 'PARENTScBIRTHDATE)
- /**/
- IF PARENTScDEATHDATE ~= "" THEN
- WriteCh('PERSONFILE',' + 'PARENTScDEATHDATE)
- /**/
- WriteLn('PERSONFILE','')
- IF DoGenText THEN DO
- WriteCh('GenealogyText',' |_____ 'PPARENTScFULLNAME)
- IF PARENTScBIRTHDATE ~= "" THEN WriteCh('GenealogyText',' * 'PARENTScBIRTHDATE)
- IF PARENTScDEATHDATE ~= "" THEN WriteCh('GenealogyText',' + 'PARENTScDEATHDATE)
- WriteLn('GenealogyText','')
- END
- END
- END
- END
- END
- END
-
- /* end of parents, siblings segment; start marriages segment */
-
- vert.0 = ''
- vert.1 = ' |'
- DO i = 0 TO 39 /* ??? GETTOTMARRIAGES IRN ??? */
- 'GETMARRIAGE' ScionIRN i
- MARRIAGE = RESULT /* use: 'EXISTFAMILY' */
- IF MARRIAGE > -1 THEN DO
- MARRIAGES = i
- j = i + 1
- vert.j = vert.i vert.1
- END
- END
- tMARRIAGESt = 't'MARRIAGES't'
- /* Say 'MARRIAGES = 'MARRIAGES tMARRIAGESt */
-
- IF tMARRIAGESt ~= 'tMARRIAGESt' THEN DO
- WriteLn('PERSONFILE',' |')
- IF DoGenText THEN WriteLn('GenealogyText',' |')
- DO i = 0 TO MARRIAGES
- 'GETMARRIAGE' ScionIRN i
- mFGRN = RESULT
- IF mFGRN ~= "" THEN DO
- ki = MARRIAGES - i + 1
- IF ki ~= MARRIAGES + 1 THEN DO
- WriteLn('PERSONFILE',vert.ki)
- IF DoGenText THEN WriteLn('GenealogyText',vert.ki)
- END
- j = MARRIAGES + 1 - i
- 'GETSPOUSE' mFGRN
- SPOUSE = RESULT
- IF SPOUSE = ScionIRN THEN
- DO
- 'GETPRINCIPAL' mFGRN
- SPOUSE = RESULT
- END
- 'GETLASTNAME' SPOUSE
- SPOUSELASTNAME = GetLastName(RESULT)
- 'GETFIRSTNAME' SPOUSE
- SPOUSEFIRSTNAME = RESULT
- thelastname = SPOUSELASTNAME
- 'GETSEX' SPOUSE
- thegender = translate(RESULT,xrange('a','z'),xrange('A','Z'))
- SPOUSEFULLNAME = GetFullName(SPOUSEFIRSTNAME)
- MSPOUSEFULLNAME = MGetFullName(SPOUSEFIRSTNAME)
- PSPOUSEFULLNAME = PGetFullName(SPOUSEFIRSTNAME)
- 'GETBIRTHDATE' SPOUSE
- SPOUSEBIRTHDATE = RESULT
- 'GETMARRYDATE' mFGRN
- MARRIAGEDATE = RESULT
- 'GETMARRYPLACE' mFGRN
- mFGRNPLACE = RESULT
- 'GETFAMUSER1' mFGRN
- MARRIAGECELEBRANT = CheckForReplacement(RESULT)
- MARRIAGEnCELEBRANT = CheckForNAReplacement(RESULT)
- 'GETFAMUSER2' mFGRN
- MARRIAGECOMMENT = CheckForReplacement(RESULT)
- MARRIAGEnCOMMENT = CheckForNAReplacement(RESULT)
- /**/
- IF SPOUSEBIRTHDATE = "" THEN
- SPOUSEFILENAME = Space(substr(SPOUSEFIRSTNAME,1,2) substr(SPOUSELASTNAME,1,6) SPOUSE)
- ELSE
- SPOUSEFILENAME = Space(substr(SPOUSEFIRSTNAME,1,2) substr(SPOUSELASTNAME,1,4) SPOUSEBIRTHDATE)
- /**/
- IF i = 0 THEN DO
- WriteCh('PERSONFILE',' 'MFULLNAME' //\ ')
-
- IF SPOUSELASTNAME ~= "" THEN
- WriteCh('PERSONFILE','<A HREF="'SPOUSEFILENAME'.html">')
-
- WriteCh('PERSONFILE',MSPOUSEFULLNAME)
-
- IF SPOUSELASTNAME ~= "" THEN
- WriteCh('PERSONFILE','</A>')
-
- IF DoGenText THEN DO
- WriteCh('GenealogyText',' 'PFULLNAME' //\ 'PSPOUSEFULLNAME)
- IF MARRIAGEDATE ~= "" THEN WriteCh('GenealogyText',' & 'MARRIAGEDATE)
- IF mFGRNPLACE ~= "" THEN WriteCh('GenealogyText',' @ 'mFGRNPLACE)
- WriteLn('GenealogyText','')
- END
- END
-
- ELSE DO
- WriteCh('PERSONFILE',vert.j'_ //\ ')
-
- IF SPOUSELASTNAME ~= "" THEN
- WriteCh('PERSONFILE','<A HREF="'SPOUSEFILENAME'.html">')
-
- WriteCh('PERSONFILE',MSPOUSEFULLNAME)
-
- IF SPOUSELASTNAME ~= "" THEN
- WriteCh('PERSONFILE','</A>')
-
- IF DoGenText THEN DO
- WriteCh('GenealogyText',vert.j'_ //\ 'PSPOUSEFULLNAME)
- IF MARRIAGEDATE ~= "" THEN WriteCh('GenealogyText',' & 'MARRIAGEDATE)
- IF mFGRNPLACE ~= "" THEN WriteCh('GenealogyText',' @ 'mFGRNPLACE)
- WriteLn('GenealogyText','')
- END
- END
-
- IF MARRIAGEDATE ~= "" THEN
- WriteCh('PERSONFILE',' & 'MARRIAGEDATE)
- IF mFGRNPLACE ~= "" THEN
- WriteCh('PERSONFILE',' @ 'mFGRNPLACE)
-
- WriteLn('PERSONFILE','')
- jk = MARRIAGES - i
- spcs = vert.jk' | '
- /**/
- FfilN = Gdir'/Family'mFGRN
- Minfo = 0
- IF Exists('Genealogy:FN'mFGRN'.'DBNAME) THEN DO
- Minfo = 1
- Say 'Writing info file 'FfilN'I.html'
- Open('FNDBNAME','Genealogy:FN'mFGRN'.'DBNAME,'r')
- Open('FAMILYI',FfilN'I.html','w')
- WriteLn('FAMILYI','<HTML>')
- WriteLn('FAMILYI','<TITLE>'FULLNAME' Family Information</TITLE>')
- WriteCh('FAMILYI','<H2>Family of 'MFULLNAME' and 'MSPOUSEFULLNAME)
- WriteCh('FAMILYI',' <A HREF="GenealogyFile.html">')
- WriteLn('FAMILYI','<B>List of Persons.</B></A></H2><PRE><TT>')
- DO While ~EOF('FNDBNAME')
- line = ReadLn('FNDBNAME')
- WriteLn('FAMILYI',CheckForReplacement(line))
- IF DoGenText THEN WriteLn('GenealogyText',spcs' 'CheckForNAReplacement(line))
- END
- Close('FNDBNAME')
- WriteLn('FAMILYI','</HTML>')
- Close('FAMILYI')
- END
- /**/
- IF MARRIAGECELEBRANT ~= '' | Minfo THEN DO
- WriteCh('PERSONFILE',spcs)
- IF Minfo THEN
- WriteCh('PERSONFILE','(<A HREF="Family'mFGRN'I.html"><B>family info</B></A>) ')
- IF MARRIAGECELEBRANT ~= '' THEN DO
- WriteCh('PERSONFILE',FAMLABEL1': 'MARRIAGECELEBRANT)
- IF DoGenText THEN WriteLn('GenealogyText',spcs||FAMLABEL1': 'MARRIAGEnCELEBRANT)
- END
- WriteLn('PERSONFILE','')
- END
- IF MARRIAGECOMMENT ~= '' THEN DO
- WriteLn('PERSONFILE',spcs' 'FAMLABEL2': 'MARRIAGECOMMENT)
- IF DoGenText THEN WriteLn('GenealogyText',spcs' 'FAMLABEL2': 'MARRIAGEnCOMMENT)
- END
- /*********************************************************************************/
-
- DO k = 0 TO 39 /* ??? GETTOTCHILDREN FGRN ??? */
- 'GETCHILD' mFGRN k
- mFGRNc = RESULT
- 'GETFIRSTNAME' mFGRNc
- mFGRNcFIRSTNAME = RESULT
- /**/
- IF mFGRNcFIRSTNAME ~= "" THEN DO
- HasCHILDREN = 1
- 'GETLASTNAME' mFGRNc
- mFGRNcLASTNAME = GetLastName(RESULT)
- 'GETFIRSTNAME' mFGRNc
- mFGRNcFIRSTNAME = RESULT
- 'GETSEX' mFGRNc
- mFGRNcGENDER = translate(RESULT,xrange('a','z'),xrange('A','Z'))
- thelastname = mFGRNcLASTNAME
- thegender = mFGRNcGENDER
- mFGRNcFULLNAME = GetFullName(mFGRNcFIRSTNAME)
- MmFGRNcFULLNAME = MGetFullName(mFGRNcFIRSTNAME)
- PmFGRNcFULLNAME = PGetFullName(mFGRNcFIRSTNAME)
- 'GETBIRTHDATE' mFGRNc
- mFGRNcBIRTHDATE = RESULT
- 'GETDEATHDATE' mFGRNc
- mFGRNcDEATHDATE = RESULT
- /**/
- IF mFGRNcBIRTHDATE = "" THEN
- mFGRNcFILENAME = Space(substr(mFGRNcFIRSTNAME,1,2) substr(mFGRNcLASTNAME,1,6) mFGRNc)
- ELSE
- mFGRNcFILENAME = Space(substr(mFGRNcFIRSTNAME,1,2) substr(mFGRNcLASTNAME,1,4) mFGRNcBIRTHDATE)
-
- jk = MARRIAGES - i
- WriteCh('PERSONFILE',vert.jk' |_____ <A HREF="'mFGRNcFILENAME'.html">')
- /**/
- IF mFGRNcLASTNAME ~= LASTNAME THEN
- WriteCh('PERSONFILE',MmFGRNcFULLNAME)
- ELSE DO
- IF mFGRNcGENDER = "m" THEN WriteCh('PERSONFILE','<B>'mFGRNcFIRSTNAME'</B>')
- IF mFGRNcGENDER = "f" THEN WriteCh('PERSONFILE','<I>'mFGRNcFIRSTNAME'</I>')
- END
- WriteCh('PERSONFILE','</A> ')
- /**/
- IF mFGRNcBIRTHDATE ~= "" THEN
- WriteCh('PERSONFILE',' * 'mFGRNcBIRTHDATE)
- /**/
- IF mFGRNcDEATHDATE ~= "" THEN
- WriteCh('PERSONFILE',' + 'mFGRNcDEATHDATE)
-
- Writeln('PERSONFILE','')
- IF DoGenText THEN DO
- WriteCh('GenealogyText',vert.jk' |_____ 'PmFGRNcFULLNAME)
- IF mFGRNcBIRTHDATE ~= "" THEN WriteCh('GenealogyText',' * 'mFGRNcBIRTHDATE)
- IF mFGRNcDEATHDATE ~= "" THEN WriteCh('GenealogyText',' + 'mFGRNcDEATHDATE)
- WriteLn('GenealogyText','')
- END
- END
- END
- END
- /*********************************************************************************/
- END
- END
- ELSE DO
- WriteLn('PERSONFILE',' |')
- IF DoGenText THEN WriteLn('GenealogyText',' |')
- WriteLn('PERSONFILE',' 'MFULLNAME)
- IF DoGenText THEN WriteLn('GenealogyText',' 'PFULLNAME)
- END
- WriteLn('PERSONFILE','</TT></PRE>')
- IF HasPARENTS THEN DO
- WriteLn('PERSONFILE','<HR>')
- IF DoGenText THEN DO
- WriteLn('GenealogyText','')
- WriteLn('GenealogyText','-----------------------------------------------------------')
- WriteLn('GenealogyText','')
- END
- WriteCh('PERSONFILE','<H3>Ancestors of ')
- WriteCh('PERSONFILE','<B>'MFULLNAME)
- WriteLn('PERSONFILE','</H3>')
- IF DoGenText THEN WriteLn('GenealogyText',' Ancestors of 'PFULLNAME)
- IF DoGenText THEN WriteLn('GenealogyText','')
- WriteLn('PERSONFILE','<PRE><TT>')
- Paternal(ScionIRN,' ')
- WriteCh('PERSONFILE','<H2>'MFULLNAME)
- IF BIRTHDATE ~= "" THEN WriteCh('PERSONFILE',' * 'BIRTHDATE)
- IF DEATHDATE ~= "" THEN WriteCh('PERSONFILE',' + 'DEATHDATE)
- WriteLn('PERSONFILE','</H2>')
- IF DoGenText THEN DO
- WriteCh('GenealogyText',PFULLNAME)
- IF BIRTHDATE ~= "" THEN WriteCh('GenealogyText',' * 'BIRTHDATE)
- IF DEATHDATE ~= "" THEN WriteCh('GenealogyText',' + 'DEATHDATE)
- WriteLn('GenealogyText','')
- END
- Maternal(ScionIRN,' ')
- WriteLn('PERSONFILE','</TT></PRE>')
- END
- /* ELSE */
- IF HasCHILDREN THEN DO
- WriteLn('PERSONFILE','<HR>')
- IF DoGenText THEN DO
- WriteLn('GenealogyText','')
- WriteLn('GenealogyText','-----------------------------------------------------------')
- WriteLn('GenealogyText','')
- WriteLn('GenealogyText',' Descendants of 'PFULLNAME)
- WriteLn('GenealogyText','')
- END
- WriteLn('PERSONFILE','<H3>Descendants of 'MFULLNAME'</H3>')
- indent = " "
- WriteLn('PERSONFILE','<PRE><TT>')
- WriteCh('PERSONFILE',indent||MFULLNAME)
- IF BIRTHDATE ~= "" THEN WriteCh('PERSONFILE',' * 'BIRTHDATE)
- IF DEATHDATE ~= "" THEN WriteCh('PERSONFILE',' + 'DEATHDATE)
- WriteLn('PERSONFILE','<BR>')
- IF DoGenText THEN DO
- WriteCh('GenealogyText',indent || PFULLNAME)
- IF BIRTHDATE ~= "" THEN WriteCh('GenealogyText',' * 'BIRTHDATE)
- IF DEATHDATE ~= "" THEN WriteCh('GenealogyText',' + 'DEATHDATE)
- WriteLn('GenealogyText','')
- END
- marriagesANDchildren(ScionIRN,indent)
- WriteLn('PERSONFILE','</TT></PRE>')
- END
- /* WriteLn('PERSONFILE','<HR>')
- WriteLn('PERSONFILE','<Address>')
- 'GETPROGVERSION'
- VERSION = RESULT
- WriteCh('PERSONFILE','<H3>ScionGenealogist')
- IF VERSION > 0 THEN WriteCh('PERSONFILE',' V 'VERSION)
- WriteLn('PERSONFILE',' © Robbie J Akins; ')
- WriteLn('PERSONFILE','ScionToMosaic.rexx © Harold H. Ipolyi</H3>')
- WriteLn('PERSONFILE','</Address>') */
- WriteLn('PERSONFILE','</HTML>')
- Close('PERSONFILE')
- IF EndOfFile & DoGenText THEN WriteLn('GenealogyText','')
-
- IF target = "NORMAL" & LASTNAME ~= "" THEN DO
- WriteCh('GenealogyFile','<A HREF="'PERSONFILENAME'.html">')
- WriteCh('GenealogyFile',MFULLNAME)
- WriteCh('GenealogyFile','</A>')
- IF BIRTHDATE ~= "" THEN WriteCh('GenealogyFile',' *'BIRTHDATE)
- IF DEATHDATE ~= "" THEN WriteCh('GenealogyFile',' +'DEATHDATE)
- /*********************************************************************************/
- IF HasFATHER THEN DO
- WriteCh('GenealogyFile',' (()) ')
- IF HasFileFATHER THEN WriteCh('GenealogyFile','<A HREF="'FATHERFILENAME'.html">')
- WriteCh('GenealogyFile',' 'MFATHERFULLNAME)
- IF HasFileFATHER THEN WriteCh('GenealogyFile','</A>')
- IF HasMOTHER THEN DO
- IF HasFATHER THEN WriteCh('GenealogyFile',' //\ ')
- IF HasFileMOTHER THEN WriteCh('GenealogyFile','<A HREF="'MOTHERFILENAME'.html">')
- WriteCh('GenealogyFile',MMOTHERFULLNAME)
- IF HasFileMOTHER THEN WriteCh('GenealogyFile','</A>')
- END
- END
- /*********************************************************************************/
- WriteLn('GenealogyFile','<BR>') /* do not close, we have many more to go. */
- END
-
- RETURN
-
-
-
-
-
- IsNumeric: PROCEDURE
- PARSE ARG str
- RETURN DataType(str, 'W')
-
-
- /* create a file name short but unique */
-
- FilName: PROCEDURE
- PARSE ARG finm lanm bdate
- RETURN Space(substr(finm,1,2) substr(lanm,1,4) bdate)
-
- /******************************** Makedir **********************************/
-
- /* Makedir - If a directory under the given name already exists, or can be
- created, return 1, otherwise return 0. Though this function works
- correctly under Workbench 1.3, it has the same effect as the existing
- MAKEDIR; hence it is useful only under 2.0.
- */
- Makedir: procedure
- ds = statef(arg(1))
-
- if ds='' then
- result = 'MAKEDIR'(arg(1))
- else
- result = left(ds,3) = 'DIR'
-
- return result
-
- CheckForReplacement: PROCEDURE
- PARSE ARG line "<" last
- IF last = "" THEN RETURN CheckReplacement(line)
- RIRN = GetRIRN(last || ".")
- IF RIRN = 0 THEN RETURN line || "<" || last
- last = CheckForReplacement(last) /* recursion */
- lastend = GetEnd(last || ".")
- 'GETLASTNAME' RIRN
- RIRNLASTNAME = GetLastName(RESULT)
- 'GETFIRSTNAME' RIRN
- RIRNFIRSTNAME = RESULT
- thelastname = RIRNLASTNAME
- 'GETBIRTHDATE' RIRN
- RIRNBIRTHDATE = RESULT
- 'GETSEX' RIRN
- IF translate(RESULT,xrange('a','z'),xrange('A','Z')) = "m" THEN
- RIRNFULLNAME = '<B>' || GetFullName(RIRNFIRSTNAME) || '</B>'
- ELSE
- RIRNFULLNAME = '<I>' || GetFullName(RIRNFIRSTNAME) || '</I>'
- IF RIRNLASTNAME = "" THEN
- RETURN line || RIRNFULLNAME || lastend
- IF RIRNBIRTHDATE = "" THEN
- RIRNFILENAME = Space(substr(RIRNFIRSTNAME,1,2) substr(RIRNLASTNAME,1,6) RIRN)
- ELSE
- RIRNFILENAME = Space(substr(RIRNFIRSTNAME,1,2) substr(RIRNLASTNAME,1,4) RIRNBIRTHDATE)
- RETURN line || '<A HREF="'RIRNFILENAME'.html">'RIRNFULLNAME'</A>' || lastend
-
- CheckReplacement: PROCEDURE
- PARSE ARG line "[" last
- IF last = "" THEN RETURN line
- RIRN = GetaRIRN(last || ".")
- IF RIRN = 0 THEN RETURN line || "[" || last
- last = CheckForReplacement(last) /* recursion */
- lastend = GetaEnd(last || ".")
- 'GETLASTNAME' RIRN
- RIRNLASTNAME = GetLastName(RESULT)
- 'GETFIRSTNAME' RIRN
- RIRNFIRSTNAME = RESULT
- thelastname = RIRNLASTNAME
- 'GETBIRTHDATE' RIRN
- RIRNBIRTHDATE = RESULT
- 'GETSEX' RIRN
- IF translate(RESULT,xrange('a','z'),xrange('A','Z')) = "m" THEN
- RIRNFULLNAME = '<B>' || GetFullName(RIRNFIRSTNAME) || '</B>'
- ELSE
- RIRNFULLNAME = '<I>' || GetFullName(RIRNFIRSTNAME) || '</I>'
- IF RIRNLASTNAME = "" THEN
- RETURN line || RIRNFULLNAME || lastend
- IF RIRNBIRTHDATE = "" THEN
- RIRNFILENAME = Space(substr(RIRNFIRSTNAME,1,2) substr(RIRNLASTNAME,1,6) RIRN)
- ELSE
- RIRNFILENAME = Space(substr(RIRNFIRSTNAME,1,2) substr(RIRNLASTNAME,1,4) RIRNBIRTHDATE)
- RETURN line || '<A HREF="'RIRNFILENAME'.html">'RIRNFULLNAME'</A>' || lastend
-
- CheckForNAReplacement: PROCEDURE
- PARSE ARG line "<" last
- IF last = "" THEN RETURN CheckNAReplacement(line)
- RIRN = GetRIRN(last || ".")
- IF RIRN = 0 THEN RETURN line || "<" || last
- last = CheckForNAReplacement(last) /* recursion */
- lastend = GetEnd(last || ".")
- 'GETLASTNAME' RIRN
- RIRNLASTNAME = GetLastName(RESULT)
- 'GETFIRSTNAME' RIRN
- RIRNFIRSTNAME = RESULT
- thelastname = RIRNLASTNAME
- 'GETBIRTHDATE' RIRN
- RIRNBIRTHDATE = RESULT
- 'GETSEX' RIRN
- GENDER = translate(RESULT,xrange('a','z'),xrange('A','Z'))
- /* thelastname = GetFullName(RIRNLASTNAME) */
- thegender = GENDER
- IF thegender = "m" THEN
- RIRNFULLNAME = '' || GetFullName(RIRNFIRSTNAME) || ''
- ELSE
- RIRNFULLNAME = '' || GetFullName(RIRNFIRSTNAME) || ''
- RETURN line || RIRNFULLNAME lastend
-
- CheckNAReplacement: PROCEDURE
- PARSE ARG line "[" last
- IF last = "" THEN RETURN line
- RIRN = GetaRIRN(last || ".")
- IF RIRN = 0 THEN RETURN line || "[" || last
- last = CheckForNAReplacement(last) /* recursion */
- lastend = GetaEnd(last || ".")
- 'GETLASTNAME' RIRN
- RIRNLASTNAME = GetLastName(RESULT)
- 'GETFIRSTNAME' RIRN
- RIRNFIRSTNAME = RESULT
- thelastname = RIRNLASTNAME
- 'GETBIRTHDATE' RIRN
- RIRNBIRTHDATE = RESULT
- 'GETSEX' RIRN
- GENDER = translate(RESULT,xrange('a','z'),xrange('A','Z'))
- /* thelastname = GetFullName(RIRNLASTNAME) */
- thegender = GENDER
- IF thegender = "m" THEN
- RIRNFULLNAME = '' || GetFullName(RIRNFIRSTNAME) || ''
- ELSE
- RIRNFULLNAME = '' || GetFullName(RIRNFIRSTNAME) || ''
- RETURN line || RIRNFULLNAME lastend
-
- Paternal: PROCEDURE EXPOSE DoGenText
- PARSE ARG irn, indent
- 'GETPARENTS' irn
- PARENTS = RESULT
- 'GETPRINCIPAL' PARENTS
- PRINCIPAL = RESULT
- 'GETSPOUSE' PARENTS
- SPOUSE = RESULT
- 'GETSEX' PRINCIPAL
- IF RESULT = 'M' THEN DO
- FIRN = PRINCIPAL
- MIRN = SPOUSE
- END
- ELSE DO
- FIRN = SPOUSE
- MIRN = PRINCIPAL
- END
- pirn = FIRN
- IF 't'pirn't' ~= 'tt' THEN DO
- Paternal(pirn,' 'indent)
- 'GETLASTNAME' pirn
- pirnLASTNAME = GetLastName(RESULT)
- thelastname = pirnLASTNAME
- 'GETFIRSTNAME' pirn
- pirnFIRSTNAME = RESULT
- pirnFULLNAME = GetFullName(pirnFIRSTNAME)
- 'GETBIRTHDATE' pirn
- pirnBIRTHDATE = RESULT
- IF pirnLASTNAME ~= "" THEN DO
- IF pirnBIRTHDATE = "" THEN
- pirnPERSONFILENAME = Space(substr(pirnFIRSTNAME,1,2) substr(pirnLASTNAME,1,6) pirn)
- ELSE
- pirnPERSONFILENAME = Space(substr(pirnFIRSTNAME,1,2) substr(pirnLASTNAME,1,4) pirnBIRTHDATE)
- END
- WriteCh('PERSONFILE',indent'- ')
- IF pirnLASTNAME ~= "" THEN WriteCh('PERSONFILE','<A HREF="'pirnPERSONFILENAME'.html">')
- WriteCh('PERSONFILE','<B>'pirnFULLNAME)
- IF pirnLASTNAME ~= "" THEN WriteCh('PERSONFILE','</A>')
- IF pirnBIRTHDATE ~= "" THEN WriteCh('PERSONFILE',' * 'pirnBIRTHDATE)
- 'GETDEATHDATE' pirn
- pirnDEATHDATE = RESULT
- IF pirnDEATHDATE ~= "" THEN WriteCh('PERSONFILE',' + 'pirnDEATHDATE)
- WriteLn('PERSONFILE','</B>')
- IF DoGenText THEN DO
- WriteCh('GenealogyText',indent'- 'pirnFULLNAME)
- IF pirnBIRTHDATE ~= "" THEN WriteCh('GenealogyText',' * 'pirnBIRTHDATE)
- IF pirnDEATHDATE ~= "" THEN WriteCh('GenealogyText',' + 'pirnDEATHDATE)
- WriteLn('GenealogyText','')
- END
- Maternal(pirn,' 'indent)
- END
- RETURN 0
-
- Maternal: PROCEDURE EXPOSE DoGenText
- PARSE ARG irn, indent
- 'GETPARENTS' irn
- PARENTS = RESULT
- 'GETPRINCIPAL' PARENTS
- PRINCIPAL = RESULT
- 'GETSPOUSE' PARENTS
- SPOUSE = RESULT
- 'GETSEX' PRINCIPAL
- IF RESULT = 'M' THEN DO
- FIRN = PRINCIPAL
- MIRN = SPOUSE
- END
- ELSE DO
- FIRN = SPOUSE
- MIRN = PRINCIPAL
- END
- pirn = MIRN
- IF 't'pirn't' ~= 'tt' THEN DO
- Paternal(pirn,' 'indent)
- 'GETLASTNAME' pirn
- pirnLASTNAME = GetLastName(RESULT)
- thelastname = pirnLASTNAME
- 'GETFIRSTNAME' pirn
- pirnFIRSTNAME = RESULT
- pirnFULLNAME = GetFullName(pirnFIRSTNAME)
- 'GETBIRTHDATE' pirn
- pirnBIRTHDATE = RESULT
- IF pirnLASTNAME ~= "" THEN DO
- IF pirnBIRTHDATE = "" THEN
- pirnPERSONFILENAME = Space(substr(pirnFIRSTNAME,1,2) substr(pirnLASTNAME,1,6) pirn)
- ELSE
- pirnPERSONFILENAME = Space(substr(pirnFIRSTNAME,1,2) substr(pirnLASTNAME,1,4) pirnBIRTHDATE)
- END
- WriteCh('PERSONFILE',indent'- ')
- IF pirnLASTNAME ~= "" THEN WriteCh('PERSONFILE','<A HREF="'pirnPERSONFILENAME'.html">')
- WriteCh('PERSONFILE','<I>'pirnFULLNAME)
- IF pirnLASTNAME ~= "" THEN WriteCh('PERSONFILE','</A>')
- IF pirnBIRTHDATE ~= "" THEN WriteCh('PERSONFILE',' * 'pirnBIRTHDATE)
- 'GETDEATHDATE' pirn
- pirnDEATHDATE = RESULT
- IF pirnDEATHDATE ~= "" THEN WriteCh('PERSONFILE',' + 'pirnDEATHDATE)
- WriteLn('PERSONFILE','</I>')
- IF DoGenText THEN DO
- WriteCh('GenealogyText',indent'- 'pirnFULLNAME)
- IF pirnBIRTHDATE ~= "" THEN WriteCh('GenealogyText',' * 'pirnBIRTHDATE)
- IF pirnDEATHDATE ~= "" THEN WriteCh('GenealogyText',' + 'pirnDEATHDATE)
- WriteLn('GenealogyText','')
- END
- Maternal(pirn,' 'indent)
- END
- RETURN 0
-
- marriagesANDchildren: PROCEDURE EXPOSE DoGenText
- PARSE ARG ScionIRN,indent
- DO i = 0 TO 39 /* ??? GETTOTMARRIAGES IRN ??? */
- 'GETMARRIAGE' ScionIRN i
- MARRIAGE = RESULT
- IF MARRIAGE > -1 THEN DO
- MARRIAGES = i
- END
- END
- tMARRIAGESt = 't'MARRIAGES't'
- /* Say 'MARRIAGES = 'MARRIAGES tMARRIAGESt */
-
- IF tMARRIAGESt ~= 'tMARRIAGESt' THEN DO
- DO i = 0 TO MARRIAGES
- 'GETMARRIAGE' ScionIRN i
- mFGRN = RESULT
- IF mFGRN ~= "" THEN DO
- 'GETSPOUSE' mFGRN
- SPOUSE = RESULT
- IF SPOUSE = ScionIRN THEN
- DO
- 'GETPRINCIPAL' mFGRN
- SPOUSE = RESULT
- END
- 'GETLASTNAME' SPOUSE
- SPOUSELASTNAME = GetLastName(RESULT)
- 'GETFIRSTNAME' SPOUSE
- SPOUSEFIRSTNAME = RESULT
- thelastname = SPOUSELASTNAME
- 'GETSEX' SPOUSE
- thegender = translate(RESULT,xrange('a','z'),xrange('A','Z'))
- SPOUSEFULLNAME = GetFullName(SPOUSEFIRSTNAME)
- MSPOUSEFULLNAME = MGetFullName(SPOUSEFIRSTNAME)
- PSPOUSEFULLNAME = PGetFullName(SPOUSEFIRSTNAME)
- 'GETBIRTHDATE' SPOUSE
- SPOUSEBIRTHDATE = RESULT
- 'GETDEATHDATE' SPOUSE
- SPOUSEDEATHDATE = RESULT
- IF SPOUSEBIRTHDATE = "" THEN
- SPOUSEFILENAME = Space(substr(SPOUSEFIRSTNAME,1,2) substr(SPOUSELASTNAME,1,6) SPOUSE)
- ELSE
- SPOUSEFILENAME = Space(substr(SPOUSEFIRSTNAME,1,2) substr(SPOUSELASTNAME,1,4) SPOUSEBIRTHDATE)
- WriteCH('PERSONFILE',indent'spouse: ')
- IF SPOUSELASTNAME ~= "" THEN
- WriteCh('PERSONFILE','<A HREF="'SPOUSEFILENAME'.html">')
- WriteCh('PERSONFILE',MSPOUSEFULLNAME)
- IF SPOUSELASTNAME ~= "" THEN
- WriteCh('PERSONFILE','</A>')
- IF SPOUSEBIRTHDATE ~= "" THEN
- WriteCh('PERSONFILE',' * 'SPOUSEBIRTHDATE)
- IF SPOUSEDEATHDATE ~= "" THEN
- WriteCh('PERSONFILE',' + 'SPOUSEDEATHDATE)
- IF DoGenText THEN DO
- WriteCh('GenealogyText',indent'spouse: 'PSPOUSEFULLNAME)
- IF SPOUSEBIRTHDATE ~= "" THEN
- WriteCh('GenealogyText',' * 'SPOUSEBIRTHDATE)
- IF SPOUSEDEATHDATE ~= "" THEN
- WriteCh('GenealogyText',' + 'SPOUSEDEATHDATE)
- WriteLn('GenealogyText','')
- END
- WriteLn('PERSONFILE','<BR>')
- indent2 = indent || " | "
- DO k = 0 TO 39 /* ??? GETTOTCHILDREN FGRN ??? */
- 'GETCHILD' mFGRN k
- mFGRNc = RESULT
- 'GETFIRSTNAME' mFGRNc
- mFGRNcFIRSTNAME = RESULT
- /**/
- IF mFGRNcFIRSTNAME ~= "" THEN DO
- 'GETLASTNAME' mFGRNc
- mFGRNcLASTNAME = GetLastName(RESULT)
- 'GETFIRSTNAME' mFGRNc
- mFGRNcFIRSTNAME = RESULT
- 'GETSEX' mFGRNc
- mFGRNcGENDER = translate(RESULT,xrange('a','z'),xrange('A','Z'))
- thelastname = mFGRNcLASTNAME
- thegender = mFGRNcGENDER
- mFGRNcFULLNAME = GetFullName(mFGRNcFIRSTNAME)
- MmFGRNcFULLNAME = MGetFullName(mFGRNcFIRSTNAME)
- PmFGRNcFULLNAME = PGetFullName(mFGRNcFIRSTNAME)
- 'GETBIRTHDATE' mFGRNc
- mFGRNcBIRTHDATE = RESULT
- 'GETDEATHDATE' mFGRNc
- mFGRNcDEATHDATE = RESULT
- /**/
- IF mFGRNcBIRTHDATE = "" THEN
- mFGRNcFILENAME = Space(substr(mFGRNcFIRSTNAME,1,2) substr(mFGRNcLASTNAME,1,6) mFGRNc)
- ELSE
- mFGRNcFILENAME = Space(substr(mFGRNcFIRSTNAME,1,2) substr(mFGRNcLASTNAME,1,4) mFGRNcBIRTHDATE)
- /**/
- WriteCh('PERSONFILE',indent2||'<A HREF="'mFGRNcFILENAME'.html">'MmFGRNcFULLNAME'</A> ')
- /**/
- IF mFGRNcBIRTHDATE ~= "" THEN
- WriteCh('PERSONFILE',' * 'mFGRNcBIRTHDATE)
- /**/
- IF mFGRNcDEATHDATE ~= "" THEN
- WriteCh('PERSONFILE',' + 'mFGRNcDEATHDATE)
-
- Writeln('PERSONFILE','<BR>')
- IF DoGenText THEN DO
- WriteCh('GenealogyText',indent2||PmFGRNcFULLNAME)
- IF mFGRNcBIRTHDATE ~= "" THEN WriteCh('GenealogyText',' * 'mFGRNcBIRTHDATE)
- IF mFGRNcDEATHDATE ~= "" THEN WriteCh('GenealogyText',' + 'mFGRNcDEATHDATE)
- WriteLn('GenealogyText','')
- END
- /**********************/
- marriagesANDchildren(mFGRNc,indent2)
- END
- END
- END
- END
- END
- RETURN 0
-
- GetRIRN: PROCEDURE
- PARSE ARG numb ">" last
- IF last = "" THEN RETURN 0
- IF IsNumeric(numb) THEN RETURN numb
- RETURN 0
-
- GetaRIRN: PROCEDURE
- PARSE ARG numb "]" last
- IF last = "" THEN RETURN 0
- IF IsNumeric(numb) THEN RETURN numb
- RETURN 0
-
- GetEnd: PROCEDURE
- PARSE ARG line ">" last
- IF last = "" THEN RETURN substr(line,1,length(line)-1)
- RETURN substr(last,1,length(last)-1)
-
- GetaEnd: PROCEDURE
- PARSE ARG line "]" last
- IF last = "" THEN RETURN substr(line,1,length(line)-1)
- RETURN substr(last,1,length(last)-1)
-
- GetLength: PROCEDURE
- PARSE UPPER ARG names
- nonletters = length(compress(names, xrange('A','Z')))
- RETURN Length(names) - nonletters * 4 / 10
-
- /* create a full name from first, last, and honorifics parts */
-
- GetFullName: PROCEDURE EXPOSE thelastname
- PARSE ARG firstnames "," hon
- IF hon = "" THEN DO
- IF length(firstnames) > 2 THEN
- IF substr(firstnames,length(firstnames)-1,length(firstnames)) = "V." THEN
- firstnames = substr(firstnames,1,length(firstnames)-2) || "v."
- RETURN firstnames thelastname
- END
- RETURN firstnames Space(thelastname) || ","hon
-
- MGetFullName: PROCEDURE EXPOSE thelastname thegender
- PARSE ARG firstnames "," hon
- gchar = "B"
- IF thegender = "f" THEN gchar = "I"
- IF hon = "" THEN DO
- IF length(firstnames) > 2 THEN
- IF substr(firstnames,length(firstnames)-1,length(firstnames)) = "V." THEN
- firstnames = substr(firstnames,1,length(firstnames)-2) || "v."
- RETURN "<"gchar">"firstnames thelastname"</"gchar">"
- END
- RETURN "<"gchar">"firstnames Space(thelastname) || ","hon"</"gchar">"
-
- PGetFullName: PROCEDURE EXPOSE thelastname thegender
- PARSE ARG firstnames "," hon
- schar = "1"
- uchar = "2"
- IF thegender = "f" THEN DO
- schar = "3"
- uchar = "3"
- END
- IF hon = "" THEN DO
- IF length(firstnames) > 2 THEN
- IF substr(firstnames,length(firstnames)-1,length(firstnames)) = "V." THEN
- firstnames = substr(firstnames,1,length(firstnames)-2) || "v."
- RETURN ""schar"m"firstnames thelastname""uchar"m"
- END
- RETURN ""schar"m"firstnames Space(thelastname) || ","hon""uchar"m"
-
-
-
- /* Capitalize last name; also handle special cases! */
- /* End users must customize this code to aviod trashy output */
-
- GetLastName: PROCEDURE
- PARSE ARG str
- IF str = "BAUER-GAUSS" THEN RETURN "Bauer-Gauss"
- IF str = "DE IPOLYI" THEN RETURN "deIpolyi"
- IF str = "DEIPOLYI" THEN RETURN "deIpolyi"
- IF str = "MC GRADY" THEN RETURN "McGrady"
- IF str = "KIS RED" THEN RETURN "KisRed"
- IF str = "ROTH-HACKENSCHMIDT" THEN RETURN "Roth-Hackenschmidt"
- IF str = "SCHüCH-GLICKHFELDEN" THEN RETURN "Schüch-Glickhfelden"
- ELSE
- DO
- spart = translate(substr(str,2,length(str)),xrange('a','z'),xrange('A','Z'))
- END
- RETURN substr(str,1,1)Space(spart)
-